package web;

import Persistencia.Fisioterapeuta;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import controladores.*;
import dominio.login;
import java.util.HashMap;
import java.util.Map;
/*
 * Este controlador se encarga de manejar las peticiones hechas por la pagina autenticar,
 * verificando los datos y regresando la respectiva pagina de inicio para cada tipo de usuario.
 *
 */
public class ControladorSimpleAutenticar extends SimpleFormController {

    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());
    private ControladorAutenticar controlador = new ControladorAutenticar();    

    public ModelAndView onSubmit(Object command) throws ServletException {
        String usuario = ((login) command).getUsuario();
        String pass = ((login) command).getContrasena();
        logger.info("user " + usuario + ".");
        logger.info("contrasena " + pass + ".");
        String res = controlador.verificarUsuario(usuario,pass);
        int idUser = controlador.verificarUsuarioId(usuario,pass);
        System.out.println(idUser+"  "+res+"  ControSimpleAutenticar LOGIN");
        if(res!=null){
            Fisioterapeuta objFis=controlador.getFIsio(""+idUser);
            if(res.equals("Administrador")){
                Map<String, Object> myModel = new HashMap<String, Object>();                
                myModel.put("login", res);                
                return new ModelAndView("indexAdmin","model",myModel);
            }
            if(res.equals("fisioterapeuta")){
                Map<String, Object> myModel = new HashMap<String, Object>();
                myModel.put("id_fisio", idUser);
                myModel.put("nombre", objFis.getNombre());                
                myModel.put("apellido", objFis.getApellido());
                return new ModelAndView("indexFisio","model",myModel);
            }
            if(res.equals("coordinador")){
                Map<String, Object> myModel = new HashMap<String, Object>();               
                myModel.put("id_fisio", idUser);
                myModel.put("nombre", objFis.getNombre());                
                myModel.put("apellido", objFis.getApellido());
                return new ModelAndView("indexCoordinador","model",myModel);
            }
        }else{
            Map<String, Object> modelo = new HashMap();
            modelo.put("mensajeOk", "");
            modelo.put("mensajeNo", "La información de nombre de usuario o contraseña introducida no es correcta");
            modelo.put("direccion", "autenticar.htm");
            return new ModelAndView("resultadoValidator","model",modelo);
        }
        logger.info("returning from ControladorAutenticar  to " + res);
        return new ModelAndView(new RedirectView(getSuccessView()));
    }
    
    protected Object formBackingObject(HttpServletRequest request) throws ServletException {
        login log = new login();
        return log;
    }

    public void setControladorAutenticar(ControladorAutenticar productManager) {
        this.controlador = productManager;
    }

    public ControladorAutenticar getControladorAutenticar() {
        return controlador;
    }

}
